package com.zshy.base.mq.core;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.lang.reflect.Method;
import java.util.List;
import java.util.function.Function;

/**
 * MQ监听器
 *
 * @author zhouhengzhe
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class MQListener {
    /**
     * 监听器方法
     */
    private Method method;
    /**
     * MQ事件反序列化函数
     */
    private Function<String, MQEvent> deserialize;

    /**
     * 消费者组
     */
    private String group;
    /**
     * 主题
     */
    private String topic;
    /**
     * 标签列表
     */
    private String tags;

    /**
     * 支持消费的列表
     */
    private List<String> supports;
    /**
     * 是否监听成功
     */
    private boolean success;

    public String groupTopicTags() {
        if (tags == null || tags.isEmpty()) {
            //21自带的String模版
            return STR."\{group}:\{topic}";
        }
        return STR."\{group}:\{topic}:\{tags}";
    }

    public String group(String concat) {
        if (this.group != null && !this.group.isEmpty()) {
            return group + concat;
        }
        return "";
    }

    public String tags(String concat) {
        if (this.tags != null && !this.tags.isEmpty()) {
            return concat + tags;
        }
        return "";
    }

    public String getTags() {
        return tags == null ? "" : tags;
    }

}